/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ucab.desarrollo.viajesbook.actions;

import com.opensymphony.xwork2.ActionSupport;
import java.util.List;
import java.lang.Object;
import java.lang.Number;
import java.lang.Long;
import java.util.Date;
import ucab.desarrollo.viajesbook.AppContext;
import ucab.desarrollo.viajesbook.beans.Itinerario;
import ucab.desarrollo.viajesbook.beans.ItinerarioId;
import ucab.desarrollo.viajesbook.beans.PropuestaRuta;
import ucab.desarrollo.viajesbook.beans.Usuario;
import ucab.desarrollo.viajesbook.beans.Viaje;
import ucab.desarrollo.viajesbook.negocio.InvitadoBO;
import ucab.desarrollo.viajesbook.negocio.ItinerarioBO;
import ucab.desarrollo.viajesbook.negocio.RutasBO;
import ucab.desarrollo.viajesbook.negocio.ViajeBO;
import ucab.desarrollo.viajesbook.negocio.VotacionBO;

/**
 *
 * @author Ju4nC4rlos
 */
public class CerrarViajeAction extends ActionSupport {

    private static final long serialVersionUID = 2228056990625416790L;
    private String id;
    private List<Usuario> usuarios;
    private List<PropuestaRuta> propuestas;

    public List<PropuestaRuta> getPropuestas() {
        return propuestas;
    }

    public void setPropuestas(List<PropuestaRuta> propuestas) {
        this.propuestas = propuestas;
    }

    public List<Usuario> getUsuarios() {
        return usuarios;
    }

    public void setUsuarios(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String execute() {
        InvitadoBO dao1 = new InvitadoBO();
        RutasBO dao2 = new RutasBO();
        VotacionBO dao3 = new VotacionBO();
        ItinerarioBO dao4 = new ItinerarioBO();
        ViajeBO dao5 = new ViajeBO();
        Viaje viaje = new Viaje();
        Itinerario itinerario = (Itinerario) AppContext.getApplicationContext().getBean("itinerario");
        ItinerarioId identificador = (ItinerarioId) AppContext.getApplicationContext().getBean("itinerarioid");


        int idviaje;
        int idpropuesta;
        int Nusers;
        List conteodevotos;
        List fechas;
        Date fechaviaje;
        String votos;
        String descripcion;
        String foto;
        int cuenta;
        int condicion;
        try {
            idviaje = Integer.parseInt(id);
            usuarios = dao1.UsuariosDeUnViaje(idviaje);
            Nusers = usuarios.size();
            if (Nusers % 2 != 0) {
                condicion = (Nusers/2)+1;
            } else {
                condicion = Nusers/2;
            }
            propuestas = dao2.devolverRutasdeViaje(idviaje);
            for (int i = 0; i < propuestas.size(); i++) {
                idpropuesta = propuestas.get(i).getIdpropuesta();
                conteodevotos = dao3.ConteoDeVotoPorRuta(idpropuesta);
                votos = conteodevotos.get(0).toString();
                cuenta = Integer.parseInt(votos);
                if (cuenta >= condicion) {
                    fechas = dao2.devolverFechaPorIdRuta(idpropuesta);
                    fechaviaje = (Date) fechas.get(0);
                    descripcion = propuestas.get(i).getPropuestaLugar();
                    foto = propuestas.get(i).getPropuestaFoto();
                    identificador.setViajeIdviaje(idviaje);
                    itinerario.setId(identificador);
                    itinerario.setItinerarioFecha(fechaviaje);
                    itinerario.setItinerariodescripcion(descripcion);
                    itinerario.setItinerariofoto(foto);
                    viaje = dao5.devolverViajesPorId(idviaje);
                    itinerario.setViaje(viaje);
                    dao4.guardarItinerario(itinerario);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return SUCCESS;
    }
}
